﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Modelo_ETdA.Negocio.Analise.Formato
{
    public class FormatoAvaliacaoAnalista : FormatoAvaliacao
    {
        private int minRuido;
        private int minTemp;
        private int minLum;
        private int maxRuido;
        private int maxTemp;
        private int maxLum;

        private Dictionary<int, List<QuestaoAnalista>> mapDivisaoListQuestao;

        public FormatoAvaliacaoAnalista(int codAmbC, string nome, int min_Ruido, int min_Temp, int min_Lum, int max_Ruido, int max_Temp, int max_Lum, DocumentoCabecalho doc_cabecalho)
            : base(codAmbC, nome, doc_cabecalho)
        {
            this.minRuido = min_Ruido; this.minTemp = min_Temp; this.minLum = min_Lum;
            this.maxRuido = max_Ruido; this.maxTemp = max_Temp; this.maxLum = max_Lum;
            mapDivisaoListQuestao = new Dictionary<int, List<QuestaoAnalista>>();
        }

        public FormatoAvaliacaoAnalista(int codAmbC, int codigo, string nome, int min_Ruido, int min_Temp, int min_Lum, int max_Ruido, int max_Temp, int max_Lum, DocumentoCabecalho doc_cabecalho)
            : base(codAmbC, codigo, nome, doc_cabecalho)
        {
            this.minRuido = min_Ruido; this.minTemp = min_Temp; this.minLum = min_Lum;
            this.maxRuido = max_Ruido; this.maxTemp = max_Temp; this.maxLum = max_Lum;
            mapDivisaoListQuestao = new Dictionary<int, List<QuestaoAnalista>>();
        }

        public void registMin(int cod, int codDivisao, int minResposta, int codConsideracao)
        {
            if (mapDivisaoListQuestao.ContainsKey(codDivisao))
            {
                mapDivisaoListQuestao[codDivisao].Add(new QuestaoAnalista(cod, codDivisao, 1, 5, minResposta, 1, codConsideracao));
            }
            else
            {
                List<QuestaoAnalista> listaQuestoes = new List<QuestaoAnalista>();
                listaQuestoes.Add(new QuestaoAnalista(cod, codDivisao, 1, 5, minResposta, 1, codConsideracao));
                mapDivisaoListQuestao.Add(codDivisao, listaQuestoes);
            }

        }

        public override Questao getQuestao(int codQuestao)
        {
            Questao ret = null;
            Boolean enc = false;
            foreach (KeyValuePair<int, List<QuestaoAnalista>> par in mapDivisaoListQuestao)
            {
                foreach (Questao q in par.Value)
                {
                    enc = (q.getCod() == codQuestao);
                    if (enc)
                    {
                        ret = q;
                        break;
                    }
                }
                if (enc) break;
            }

            return ret;
        }



        public int MinTemp
        {
            get { return minTemp; }
            set { minTemp = value; }
        }


        public int MinRuido
        {
            get { return minRuido; }
            set { minRuido = value; }
        }


        public int MinLum
        {
            get { return minLum; }
            set { minLum = value; }
        }

        public int MaxRuido
        {
            get { return maxRuido; }
            set { maxRuido = value; }
        }


        public int MaxTemp
        {
            get { return maxTemp; }
            set { maxTemp = value; }
        }


        public int MaxLum
        {
            get { return maxLum; }
            set { maxLum = value; }
        }

        public Dictionary<int, List<QuestaoAnalista>> MapDivisaoQuestao
        {
            get { return mapDivisaoListQuestao; }
            set { mapDivisaoListQuestao = value; }
        }

    }
}
